8037e0b4: 27 bd ff e8  ADDIU sp, sp, 0xffffffe8 (-24)
8037e0b8: af bf 00 14  SW ra, sp, 0x14 (20)
8037e0bc: af a4 00 18  SW a0, sp, 0x18 (24)
8037e0c0: af a5 00 1c  SW a1, sp, 0x1c (28)

8037e0c4: 3c 01 80 39  LUI at, 0x8039 (32825)
8037e0c8: ac 20 bc a4  SW r0, at, 0xffffbca4 (-17244)       *(0x8038bca4) = 0;

8037e0cc: 3c 01 80 39  LUI at, 0x8039 (32825)
8037e0d0: a4 20 bc b0  SH r0, at, 0xffffbcb0 (-17232)       *(0x8038bcb0) = 0;

8037e0d4: 3c 0e 80 39  LUI t6, 0x8039 (32825)
8037e0d8: 25 ce bc f8  ADDIU t6, t6, 0xffffbcf8 (-17160)
8037e0dc: ad c0 00 00  SW r0, t6, 0x0 (0)                   (0x8038bcf8)->off0x0 = 0;

8037e0e0: 3c 01 80 39  LUI at, 0x8039 (32825)
8037e0e4: a4 20 bd 78  SH r0, at, 0xffffbd78 (-17032)       *(0x8038bd78) = 0;

8037e0e8: 24 0f 00 02  ADDIU t7, r0, 0x2 (2)
8037e0ec: 3c 01 80 39  LUI at, 0x8039 (32825)
8037e0f0: a4 2f bd 7a  SH t7, at, 0xffffbd7a (-17030)       *(0x8038bd7a) = 2;

8037e0f4: 24 18 00 02  ADDIU t8, r0, 0x2 (2)
8037e0f8: 3c 01 80 39  LUI at, 0x8039 (32825)
8037e0fc: a4 38 bd 7e  SH t8, at, 0xffffbd7e (-17026)       *(0x8038bd7e) = 2;

8037e100: 0c 09 df d4  JAL 0x80277f50 (-2144895152)
8037e104: 8f a4 00 1c  LW a0, sp, 0x1c (28)
8037e108: 3c 01 80 39  LUI at, 0x8039 (32825)
8037e10c: ac 22 bd 80  SW v0, at, 0xffffbd80 (-17024)       *(0x8038bd80) = 0x80277f50([sp + 0x1c]);

8037e110: 8f b9 00 18  LW t9, sp, 0x18 (24)
8037e114: 3c 01 80 39  LUI at, 0x8039 (32825)
8037e118: ac 39 bc a0  SW t9, at, 0xffffbca0 (-17248)       *(0x8038bca0) = [sp + 0x18];

8037e11c: 3c 08 80 39  LUI t0, 0x8039 (32825)
8037e120: 25 08 bc b8  ADDIU t0, t0, 0xffffbcb8 (-17224)
8037e124: ad 00 00 00  SW r0, t0, 0x0 (0)                   (0x8038bcb8)->off0x0 = 0;

8037e128: 3c 09 80 39  LUI t1, 0x8039 (32825)
8037e12c: 25 29 bc b8  ADDIU t1, t1, 0xffffbcb8 (-17224)
8037e130: ad 20 00 04  SW r0, t1, 0x4 (4)                   (0x8038bcb8)->off0x4 = 0;

8037e134: 3c 0a 80 39  LUI t2, 0x8039 (32825)
8037e138: 8d 4a bd 80  LW t2, t2, 0xffffbd80 (-17024)
8037e13c: 11 40 00 0e  BEQ r0, t2, 0x8037e178 (pc + 0x38)   if (*(0x8038bd80) == 0) goto 0x8037e178;
8037e140: 00 00 00 00  NOP

8037e144: 3c 0b 80 39  LUI t3, 0x8039 (32825)
8037e148: 8d 6b bd 80  LW t3, t3, 0xffffbd80 (-17024)            t3 = *(0x8038bd80);
8037e14c: 3c 19 80 39  LUI t9, 0x8039 (32825)
8037e150: 91 6c 00 00  LBU t4, t3, 0x0 (0)                       t4 = *t3 = **(0x8038bd80)
8037e154: 00 0c 68 80  SLL t5, t4, 0x2 (2)                       t5 = t4*4 = **(0x8038bd80)*4
8037e158: 03 2d c8 21  ADDU t9, t9, t5
8037e15c: 8f 39 b8 10  LW t9, t9, 0xffffb810 (-18416)
8037e160: 03 20 f8 09  JALR t9, ra                          ((0x8038b810)[**(0x8038bd80)])();
8037e164: 00 00 00 00  NOP

8037e168: 3c 0e 80 39  LUI t6, 0x8039 (32825)
8037e16c: 8d ce bd 80  LW t6, t6, 0xffffbd80 (-17024)
8037e170: 15 c0 ff f4  BNE t6, r0, 0x8037e144 (pc - 0x30)   if (*(0x8038bd80)) goto 0x8037e144;
8037e174: 00 00 00 00  NOP

8037e178: 3c 02 80 39  LUI v0, 0x8039 (32825)
8037e17c: 10 00 00 03  BEQ r0, r0, 0x8037e18c (pc + 0xc)
8037e180: 8c 42 bc a4  LW v0, v0, 0xffffbca4 (-17244)       return *(0x8038bca4);

8037e184: 10 00 00 01  BEQ r0, r0, 0x8037e18c (pc + 0x4)
8037e188: 00 00 00 00  NOP
8037e18c: 8f bf 00 14  LW ra, sp, 0x14 (20)
8037e190: 27 bd 00 18  ADDIU sp, sp, 0x18 (24)
8037e194: 03 e0 00 08  JR ra
8037e198: 00 00 00 00  NOP

{
    *(0x8038bca4) = 0;
    *(0x8038bcb0) = 0;
    (0x8038bcf8)->off0x0 = 0;
    *(0x8038bd78) = 0;
    *(0x8038bd7a) = 2;
    *(0x8038bd7e) = 2;
    *(0x8038bd80) = 0x80277f50([sp + 0x1c]);
    *(0x8038bca0) = [sp + 0x18];
    (0x8038bcb8)->off0x0 = 0;
    (0x8038bcb8)->off0x4 = 0;
    while (*(0x8038bd80)) {
        ((0x8038b810)[**(0x8038bd80)])();
    }
    return *(0x8038bca4);
}

extern void *layout_wp;          /* 0x8038bd80 */
extern short layout_call_si;     /* 0x8038bd7a */
extern void layout_call_stack[]; /* 0x8038bcb8 */
extern void ((*layout_function_table)())[]

(??? arg1 , uint32_t segptr)
{
    *(0x8038bca4) = 0;
    *(0x8038bcb0) = 0;
    (0x8038bcf8)->off0x0 = 0;
    *(0x8038bd78) = 0;
    layout_call_si = 2;
    *(0x8038bd7e) = 2;
    layout_wp = segmented_to_virtual(segptr);
    *(0x8038bca0) = arg1;                           /* same value as *(0x8038b8a0) */
    layout_call_stack[0] = 0;
    layout_call_stack[1] = 0;
    while (layout_wp) {
        ((layout_function_table)[*layout_wp])();
    }
    return *(0x8038bca4);
}
